import urllib
import urllib.parse
import hashlib
import base64
from Cryptodome.Cipher import DES
import binascii
import re




#字符串格式化
if False:
	print("我叫：%s，我今年%d岁了" % ("乔安生",18))
	print("{} {}".format("hello", "world"))
	print("{0} {1}".format("hello", "world"))
	print("{1} {0} {1}".format("hello", "world"))
	print("我是：{0}，我今年{1}岁了".format("乔安生", 18))
	print("我叫：{}，我今年{}岁了".format("乔安生",18))
	print("我叫：{name}，我几年{age}岁了".format(name="乔安生",age = 19))
	print("{num:.2%}".format(num=12))	#输出：1200.00%
	print("{num:.3%}".format(num=12))	#输出：1200.000%
	print("{num:.2f}".format(num=1.123123122))	#输出：1.12
	print("{num:.3f}".format(num=1.123123122))	#输出：1.123

#字符串转码
if True:
	if False:
		#URL编码解码
		#导入 import urllib.parse
		urlString = 'www.qiaoansheng.com?name="乔安生"&age=18&remark="备注信息"&returnurl="www.qiaoansheng.com"'
		print("原始URL：" + urlString)
		#urlencode
		url = urllib.parse.quote(urlString)
		print(url)
		#urldecode
		url = urllib.parse.unquote(url);
		print(url)
	if False:
	    #字符串MD5加密
		md5str = "123456"
		#生成一个md5对象
		m1 = hashlib.md5()
		#使用md5对象里的update方法md5转换
		m1.update(md5str.encode("utf-8"))
		token = m1.hexdigest()
		print(token)
	if False:
	    #Base64编码
		string = "我的名字是乔安生";
		print(string)
		string = string.encode(encoding = "utf-8")
		print(string)
		base64string = base64.b64encode(string);
		base64stringsss =  base64.b64decode(base64string)
		print(base64string)
		print(base64stringsss)
		string = base64stringsss.decode(encoding = "utf-8")
		print(string)
	if False:
	    # 这是密钥
		key = b'abcdefgh'
		# 需要去生成一个DES对象
		des = DES.new(key, DES.MODE_ECB)
		# 需要加密的数据
		text = 'python spider!'
		text = text + (8 - (len(text) % 8)) * '='

		# 加密的过程
		encrypto_text = des.encrypt(text.encode())
		encrypto_text = binascii.b2a_hex(encrypto_text)
		print(encrypto_text)


#字符串截取
if False:
	string1 = "我的名字是乔安生，我今年18岁，请多关照"
	print("截取前3位：" + (string1[0:3]))					#输出：我的名
	print("截取后3位：" + (string1[-3:]))					#输出：多关照
	print("截取后第3位：" + (string1[-3]))					#输出：多
	print("截取后第4位到后2位的数据：" + (string1[-3:-1]))	#输出：多关
	print("截取到第一个，号：")								#输出：
	print("截取到最后一个，号：")							#输出：
	print("从指定位置开始截取到指定位置：" + string1[1:5])	#输出：的名字是


#获取到指定字符串的下标
if False:
	string1 = "我的名字是乔安生，我今年18岁，请多关照"
	print(string1.find("乔安生"));		#输出：5
#字符串分割
if False:
	string1 = "我的名字是乔安生，我今年18岁，请多关照"
	strings = string1.split("，")
	for x in strings:
		print(x)

#字符串替换
if False:
	string1 = "我的名字是乔安生，我今年18岁，请多关照，乔安生"
	string1 = string1.replace('乔安生','qiaoansheng')
	print(string1);

if False:
	str1 = '\f 12312312321' * 12
	print(str1)

	str2 = "qiaoansheng"
	print('q' in str2)
	print('q1' not in str2)

	#print(str2[-2])
	#print(str2.count)
	print(len(str2))
	print(len("乔安生"))

	print(r"\n\n")

#字符串大小写转换
if True:
	string1 = "我的名字是qiaoansheng，我今年18岁，请多关照，qiaoansheng"
	#转换成大写
	string1 = string1.upper()
	print(string1); #输出： 我的名字是QIAOANSHENG，我今年18岁，请多关照，QIAOANSHENG
	#转换成小写
	string1 = string1.lower()
	print(string1); #输出： 我的名字是qiaoansheng，我今年18岁，请多关照，qiaoansheng
	#大小写反转
	string1 = "我的名字是QiaoAnSheng，我今年18岁，请多关照，QiaoAnSheng"
	print(string1.swapcase()); #输出：我的名字是qIAOaNsHENG，我今年18岁，请多关照，qIAOaNsHENG
	#判断字符串中的英文是否全部都是大写
	print("QiaoAnSheng".isupper()); #输出：False
	print("QIAOANSHENG".isupper()); #输出：True
	#判断字符串中的英文是否全部都是小写
	print("QiaoAnSheng".islower()); #输出：False
	print("qiaoansheng".islower()); #输出：True
	#判断字符串中是否是数字
print("123".isdigit())          #输出：True
print("123.123".isdigit())      #输出：False
print("123三十".isdigit())      #输出：False
print("123ss".isdigit())        #输出：False

#判断字符串中是否存在汉字
zhmodel = re.compile(u'[\u4e00-\u9fa5]')    #检查中文
#zhmodel = re.compile(u'[^\u4e00-\u9fa5]')   #检查非中文
contents = u'（2014）深南法民二初字第280号'
match = zhmodel.search(contents)
if match:
    print(contents)
else:
    print(u'没有包含中文')

#字符串右对齐，左边填充指定字符
print("qiaoansheng".zfill(40))


#移除字符串两端的空格（指定的字符）
#删除两端指定的字符
print("   乔 安 生    ".strip(" "))        #输出：乔 安 生
print("00000乔 安 生00000".strip("0"))     #输出：乔 安 生
#删除字符串左边指定的字符
print("00000乔 安 生00000".lstrip("0"))    #输出：乔 安 生00000
#删除字符串右边指定的字符
print("00000乔 安 生00000".rstrip("0"))    #输出：00000乔 安 生


#判断字符串是否全部都是英文
print("sdfsdfdsf".isalpha())        #输出：True
print("sdfs dfdsf".isalpha())       #输出：False
print("sdfs111dfdsf".isalpha())     #输出：False

#判断字符串的开头和结尾是否是指定字符串
print("123321".startswith("12"))    #输出：True
print("123321".startswith("22"))    #输出：False
print("123321".endswith("21"))      #输出：True
print("123321".endswith("22"))      #输出：False


